/*******************************************************************************
版权声明: Copyright(C) HT-Tech Co., Ltd. 2020-2021. All rights reserved.
文件名称: htcfg.h
文件描述: 配置文件解析
创 建 者: 陈位仅
创建时间: 2024年11月12日
修改历史:
1. 2024年11月12日   陈位仅      创建文件 
*******************************************************************************/
#ifndef _HTCFG__15882503819
#define _HTCFG__15882503819

#define SDK_VERSION "1.0.0"

// 工作模式
typedef enum ht_mode_ {
    HT_MODE_TUNNEL = 0x01,
    HT_MODE_PROXYD = 0x02,
    HT_MODE_COMPRE = 0x03
} ht_mode_t;

// 终端配置信息
typedef struct ht_cfg_ {
    int mode;       // 工作模式
    char *gip;      // 网关IP
    short gport;    // 网关端口
    char *sip;      // 主站服务IP
    short sport;    // 主站服务端口
    char *lip;      // 本地IP
    short lport;    // 本地端口
    char *tunnel;   // 本地隧道名
    char *rootca;   // 根CA证书
    char *signcrt;  // 签名证书
    char *signkey;  // 签名私钥
    char *enccrt;   // 加密证书
    char *enckey;   // 加密私钥
    char *logfile;  // 日志文件
    char *cfgfile;  // 配置文件
    char *username; // 用户名
    char *passwd;   // 口令
    int type;       // 终端类型
    int active;     // ACL 激活状态
    int heartbeat;  // 心跳间隔
    int state;      // SSL隧道连接状态
} ht_cfg_t;

//*************************************************************
// 接口名: htcfg_load
// 返回值: 0 成功, -1 失败
// 参  数: pcfg:终端配置信息
//         argc:参数个数
//         argv:参数数组
// 描  述: 运行参数加载
//*************************************************************
int htcfg_load(ht_cfg_t *pcfg, int argc, char *argv[]);

//*************************************************************
// 接口名: htcfg_parse
// 返回值: 0 成功, -1 失败
// 参  数: pcfg:终端配置信息
//         filename:配置文件名
// 描  述: 终端配置文件解析
//*************************************************************
int htcfg_parse(ht_cfg_t *pcfg, char *filename);

//*************************************************************
// 接口名: htcfg_upstate
// 返回值: 无
// 参  数: pcfg:终端配置信息
//         state:SSL连接状态
// 描  述: 更新SSL连接状态
//*************************************************************
int htcfg_upstate(ht_cfg_t *pcfg, int state);

//*************************************************************
// 接口名: htcfg_final
// 返回值: 无
// 参  数: pcfg:终端配置信息
// 描  述: 配置资源回收
//*************************************************************
void htcfg_final(ht_cfg_t *pcfg);
#endif // _HLCFG__15882503819
